
#include "llOption.hpp"
using namespace llmake;

#include <iostream>
using namespace std;
#include <boost/program_options.hpp>
namespace po = boost::program_options;

llOption::llOption(int argc ,char * argv[])
:m_SourceRoot("./")
,m_CMake(false)
,m_IgnoreError(false)
,m_Clang(false)
{
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	po::options_description desc("Allowed options");
	desc.add_options()
		("help,h", "produce help message")
		("dir,d",po::value< string >(), "directory holds LLmakelists.txt")
		("ignore,i","ignore error")
		("clang,c","use clang")
		("cmake,C", "cmake txt file");
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	po::positional_options_description pos_desc;
	pos_desc.add("dir", -1);
	po::variables_map vm;
	po::store(po::command_line_parser(argc, argv).options(desc).positional(pos_desc).run(), vm);
	po::notify(vm);
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	if (vm.count("help"))
	{
		cout << desc << "\n";
		exit(0);
 	}
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	if (vm.count("ignore"))
	{
		m_IgnoreError= true;
	}
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	if (vm.count("clang"))
	{
		m_Clang= true;
	}
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	if (vm.count("cmake"))
	{
		m_CMake = true;
	}
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	if (vm.count("dir"))
	{
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
		m_SourceRoot = vm["dir"].as<string>();
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
	}
//cout<<"__FILE__:("<<__FILE__<<") __LINE__:("<<__LINE__<<")"<<endl;
}
